package https

import (
	"encoding/json"
	"time"

	"github.com/bitly/go-simplejson"
)

// 获取JSON中的数据
//
//	obj			要获取的obj对象，需要提供给json.Unmarshal
//	first...	simplejson.GetPath传入的string列表
func (curl *CURL) Json(obj any, first ...string) error {
	if curl.Error != nil {
		return curl.Error
	}
	// 如果传入nil则表示舍弃该值
	if obj == nil {
		return nil
	}
	if len(first) == 0 {
		curl.OverTime = time.Now()
		return json.Unmarshal([]byte(curl.Body), obj)
	}
	js, err := simplejson.NewJson([]byte(curl.Body))
	if err != nil {
		return err
	}
	var j []byte
	j, err = js.GetPath(first...).Encode() // 转换成json字符串
	if err != nil {
		return err
	}
	err = json.Unmarshal(j, obj)
	curl.OverTime = time.Now()
	if err != nil {
		return err
	}
	return nil
}

// 获取JSON中的Data对象
//
//	obj	要转化的对象，需要在json中的data里面
func (curl *CURL) JsonData(obj any) error {
	return curl.Json(obj, "data")
}
